home *** CD-ROM | disk | FTP | other *** search
/ Fritz: All Fritz / All Fritz.zip / All Fritz / FILES / BUSITION / SMARKET2.LZH / HLRB.EXE / DIR.INC < prev    next >
Text File  |  1991-08-08  |  2KB  |  100 lines

  1. {===== Display Current Directory =====}
  2.  
  3. TYPE
  4.    Dir3   = STRING[3];
  5.    FCBArray = ARRAY[0..36] OF CHAR;
  6.  
  7. CONST
  8.   GetDta =       $1a;
  9.   Get1stdir =    $11;
  10.   Getnextdir =   $12;
  11.  
  12. VAR
  13.   Dfcb         : FCBArray;
  14.   Dta          : FCBArray;
  15.  
  16. PROCEDURE DTAcall;
  17. VAR
  18.   Regs : REGISTERS;
  19. BEGIN
  20.   WITH Regs DO
  21.   BEGIN
  22.     ah := GetDta;
  23.     ds := SEG(Dta);
  24.     dx := OFS(Dta);
  25.     MSDOS(Regs)
  26.   END;
  27. END;
  28.  
  29. PROCEDURE Dircall(Call: BYTE; VAR Errflag: BYTE);
  30. VAR
  31.   Regs : REGISTERS;
  32. BEGIN
  33.   WITH Regs DO
  34.   BEGIN
  35.     ah := Call;
  36.     cx := 0;
  37.     ds := SEG(Dfcb);
  38.     dx := OFS(Dfcb);
  39.     MSDOS(Regs);
  40.     Errflag:= al;
  41.   END;
  42. END; {dircall}
  43.  
  44. PROCEDURE ShowFiles(LFExt : Dir3);
  45. VAR
  46.    DIRFile : STRING[8];
  47.    Err     : BYTE;
  48.    Exten   : STRING[3];
  49.    SFOkay  : BOOLEAN;
  50.    i       : BYTE;
  51.    j       : BYTE;
  52. BEGIN
  53.   SFOkay := FALSE;
  54.   Dfcb[0]:= ^@;
  55.   FOR i:= 1 TO 11 DO Dfcb[i]:= '?';
  56.   DTACall;
  57.   Dircall(Get1stdir, Err);
  58.   j:= 0;
  59.   REPEAT
  60.     DIRFile:= '';
  61.     FOR i:= 1 TO 8 DO DIRFile:= DIRFile + Dta[i];
  62.     Exten := '';
  63.     FOR i:= 1 TO 3 DO Exten := Exten + Dta[i+8];
  64.     IF LENGTH(LFExt) = 0
  65.     THEN
  66.     BEGIN
  67.       SFOkay := TRUE;
  68.       j := j + 20;
  69.       GOTOXY(j-19, WHEREY);
  70.       WRITE(DIRFile+'.'+Exten);
  71.       IF j = 80 THEN
  72.       BEGIN
  73.         WRITELN;
  74.         j := 0;
  75.       END;
  76.     END
  77.     ELSE
  78.     BEGIN
  79.       IF Exten = LFExt THEN
  80.       BEGIN
  81.         SFOkay := TRUE;
  82.         j := j + 10;
  83.         GOTOXY(j-9, WHEREY);
  84.         WRITE(DIRFile);
  85.         IF j = 80 THEN
  86.         BEGIN
  87.           WRITELN;
  88.           j := 0;
  89.         END;
  90.       END;
  91.     END;
  92.     Dircall(Getnextdir, Err);
  93.   UNTIL Err <> 0;
  94.   IF NOT SFOkay THEN
  95.   BEGIN
  96.     WRITELN;
  97.     WRITELN('Nothing to list');
  98.   END;
  99.   WRITELN;
  100. END;